﻿using BusinessLogicLayer;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PresentationLayer
{
    public partial class CapNhatThongTinSachForm : Form
    {
        public CapNhatSach PhuongThucCapNhatSach { get; set; }
        public Sach sach;
        public string MaSach { get; set; }
        public CapNhatThongTinSachForm()
        {
            InitializeComponent();
        }
        private void CapNhatThongTinSachForm_Load(object sender, EventArgs e)
        {
            cbbTrangThai.SelectedIndex = 0;
            ActionResultAsList<NXB> ar = new NXBManager().LayDSNXB();
            if (ar.Success)
            {
                foreach (var item in ar.ObjectList)
                {
                    cbbNXB.Items.Add(item.MaNXB);
                    cbbNXB.AutoCompleteCustomSource.Add(item.MaNXB);
                }
            }
            cbbNXB.SelectedIndex = 0;
            ActionResultAsList<TheLoai> ar1 = new TheLoaiManager().LayDSTheLoai();
            foreach (var it in ar1.ObjectList)
            {
                cbbTheLoai.Items.Add(it.MaTheLoai);
                cbbTheLoai.AutoCompleteCustomSource.Add(it.MaTheLoai);
            }
            cbbTheLoai.SelectedIndex = 0;
            //

            if (MaSach != "")
            {
                txtMaSach.ReadOnly = true;
                btnThemSach.Visible = false;
                var rs = new SachManager().TimKiemSachTheoMa(MaSach);
                sach = rs.ObjectList[0];
                txtMaSach.Text = sach.MaSach;
                txtTenSach.Text = sach.TenSach;
                cbbTrangThai.Text = sach.TrangThai;
                cbbNXB.Text = sach.NXB;
                cbbTheLoai.Text = sach.TheLoai;
                txtTacGia.Text = sach.TacGia;
                mtxtNamXB.Text = sach.NamXB.ToString();
                txtSoTrang.Text = sach.SoTrang.ToString();
                txtGia.Text = sach.Gia.ToString();
                dtpNgayNhap.Value = sach.NgayNhap;

            }
            else
            {
                btnCapNhatSach.Visible = false;
            }
        }
        private ValidateResult KiemTraHopLe()
        {
            ValidateResult vr = new ValidateResult();
            if (txtMaSach.Text == "")
                vr.AddMessage("Chưa nhập mã sách!");
            if (txtTenSach.Text == "")
                vr.AddMessage("Chưa nhập tên sách!");
            if (txtTacGia.Text == "")
                vr.AddMessage("Chưa nhập tác giả!");
            if (mtxtNamXB.Text == "")
                vr.AddMessage("Chưa nhập năm NXB!");
            if (txtSoTrang.Text == "")
                vr.AddMessage("Chưa nhập số trang!");
            if (txtGia.Text == "")
                vr.AddMessage("Chưa nhập giá sách!");
            return vr;
        }
        DateTime d = DateTime.Now;
        private void btnThemSach_Click(object sender, EventArgs e)
        {
            ValidateResult vr = new ValidateResult();
            vr = KiemTraHopLe();
            if (vr.Valid)
            {
                string masach = txtMaSach.Text;
                string tensach = txtTenSach.Text;
                string trangthai = cbbTrangThai.Text;
                string manxb = cbbNXB.Text;
                string matheloai = cbbTheLoai.Text;
                string tacgia = txtTacGia.Text;
                int namxb = Convert.ToInt32(mtxtNamXB.Text.ToString());
                int sotrang = Convert.ToInt32(txtSoTrang.Text.ToString());
                int gia = Convert.ToInt32(txtGia.Text.ToString());
                DateTime ngaynhap = DateTime.Parse(dtpNgayNhap.Text);
                Sach sach = new Sach(masach, tensach, trangthai, manxb, matheloai, tacgia, namxb, sotrang, gia, ngaynhap);

                SachManager manager = new SachManager();
                NXBManager nxbmanager = new NXBManager();
                ValidateResult vrs = new ValidateResult();
                vrs = nxbmanager.KiemTraHopLeNamXB(namxb);
                if (vrs.Valid)
                {
                    if (ngaynhap <= d)
                    {
                        ValidateResult vr1 = manager.KiemTraTrungMa(masach);
                        if (vr1.Valid)
                        {
                            if (MessageBox.Show(String.Format("Bạn muốn thêm sách có mã: {0}?", masach), "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                            {
                                ActionResult ar = new ActionResult();
                                ar = manager.ThemSach(ref sach);
                                if (ar.Success)
                                {
                                    if (PhuongThucCapNhatSach != null)
                                        PhuongThucCapNhatSach(LoaiHanhDong.Them, sach);
                                    MessageBox.Show("Thêm thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                }
                                else
                                    MessageBox.Show("Thêm thất bại!\n\nChi tiết: " + ar.Exceptions[ar.Exceptions.Count - 1].Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                        }
                        else
                            MessageBox.Show(vr1.ToString());
                    }
                    else
                        MessageBox.Show("Ngày nhập không hợp lệ!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                    MessageBox.Show(vrs.ToString());
            }
            else
                MessageBox.Show(vr.ToString());


        }

        private void btnCapNhatSach_Click(object sender, EventArgs e)
        {
            string masach = txtMaSach.Text;
            string tensach = txtTenSach.Text;
            string trangthai = cbbTrangThai.Text;
            string manxb = cbbNXB.Text;
            string matheloai = cbbTheLoai.Text;
            string tacgia = txtTacGia.Text;
            int namxb = int.Parse(mtxtNamXB.Text);
            int sotrang = int.Parse(txtSoTrang.Text);
            int gia = int.Parse(txtGia.Text);
            DateTime ngaynhap = DateTime.Parse(dtpNgayNhap.Text);
            if (MessageBox.Show(String.Format("Bạn muốn cập nhật thông tin sách có mã sách {0}?", masach), "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                NXBManager nxbmanager = new NXBManager();
                ValidateResult vrs = new ValidateResult();
                vrs = nxbmanager.KiemTraHopLeNamXB(namxb);
                if (vrs.Valid)
                {
                    if (ngaynhap <= d)
                    {
                        Sach s = new Sach(masach, tensach, trangthai, manxb, matheloai, tacgia, namxb, sotrang, gia, ngaynhap);
                        ActionResult ar = new SachManager().SuaSach(s);
                        if (ar.Success)
                        {
                            if (PhuongThucCapNhatSach != null)
                                PhuongThucCapNhatSach(LoaiHanhDong.CapNhat, s);
                            MessageBox.Show("Cập nhật thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else
                            MessageBox.Show("Cập nhật thất bại!\n\nChi tiết: " + ar.Exceptions[ar.Exceptions.Count - 1].Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                        MessageBox.Show("Ngày nhập không hợp lệ!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                    MessageBox.Show(vrs.ToString());
            }
        }


    }
}
